NO IMAGE

カレンダー簡易予定表 MySQLを廃止しCSVファイルに

20130507a「医院からのお知らせ」を「医院のカレンダー」に置き換える目論見ですが、いまだ、採用ならず。(>_<)

今回、レスポンスを改善する為、MySQLの利用をあきらめ、テキストファイル(CSV形式)をデータベースとして利用するようにPHPプログラムを見直しました。

PHPではCSVファイルを扱うための関数が用意されていました。

fgetcsv()関数は、現在のファイルポインタから1行毎にテキストを 取得し、指定した区切り文字で分割した配列を返します。

fputcsv()関数は、複数セルにあたるテキストの配列を、1行ごとに、現在のファイルポインタへ書き出します。

CSV形式をはじめ、タブ区切り テキストなどを処理するのに適しています。

予定の追加・変更・削除は、管理者用のURLから行ってもらいます。

20130507b右は管理者画面にログインした際のものです。

便利な、fputcsv()関数ですが、半角ダブルクォーテーションや半角カンマなどのCSV予約文字、及びPHP予約文字のエスケープ処理に問題あり。

ローカル環境ではダブルクォーテーション(“)でエスケープするのに対し、同じソースをWeb環境にアップして動かすと、バックスラッシュ(\)でエスケープ処理される現象が・・・。
(どちらもエスケープが必要なセルはダブルクォーテーションで囲まれます。)

たぶん、PHPサーバの動作に違いがあるのでしょう(バージョン?設定?)が、よくわからず。

Webサーバでfputcsv()関数がバックスラッシュ(\)でエスケープ処理するのは、そのまま受け入れ、fgetcsv()関数で、読み込み後に、stripcslashes()関数で、エスケープ文字を除去することで対策としました。

stripcslashes()関数に関しては、以下のサイトを参考にさせていただきました。
エスケープ文字除去



20130507c今回、予定の背景色は20色(+無色)から選択できるようにしました。

それ以外は、見た目は変更していません。

・・・Webサーバにアップ後、しばらく試用。

やはり自分ひとりが使うローカルサーバとは違い、複数人が共用しているWebサーバでは、PHPサーバ処理だけでも遅い時があるようです。

それでも、MySQLを使っていた時と比べれば雲泥の差!

・・・まあ、プログラムが適当なので、データが増えたら、遅くなるかも知れません・・・オイオイ!

現状では、CSVファイルにして正解でした。(^^;